The present invention relates to an input/output processor for handling communications between a central computer complex and peripheral subsystems. More particularly, the present invention relates to a method and apparatus for reducing the number of interrupts required of an instruction processor when the processor attempts to communicate with a peripheral subsystem but the subsystem is busy.
In the 1100/90 Data Processing System manufactured by Sperry Corporation, one or more instruction processors are connected through one or more type T3067-00 input/output processors (IOP) to a peripheral subsystem which includes one or more storage control units for controlling the access of data on a plurality of disks. In this system an instruction processor wishing to communicate with a subsystem first generates two Channel Access Words (CAW) and a channel program which contains the Channel Command Words (CCW). One of the CAWs contains a pointer to the first CCW of the channel program, while the other specifies a function code and a physical subchannel address. The CAWs and channel program are stored in memory with the CAWs being stored at a specified address or "mailbox". The instruction processor then issues a Universal Processor Interrupt (UPI) to the IOP. In response to the UPI, the IOP reads the CAWs from the mailbox. One of the CAWs contains a Start I/O Fast (SIOF) function code and in response to this code the IOP correlates the physical subchannel address to the proper channel and places the SIOF in an SIOF stack for that channel. If there are other SIOFs in the channel SIOF stack the IOP links the new SIOF to the previous SIOF placed in the stack. There is a separate SIOF stack for each channel.
A channel can be busy processing requests on its other physical subchannels when the IOP places an SIOF in its stack. If the channel is busy when the SIOF occurs, the IOP sets an SIOF pending flag for the channel. When the channel becomes idle it attempts to process the next (oldest) SIOF from its stack by removing it from the stack and sending its corresponding CCW to a designated control unit.
A control unit may be connected to more than one host system channel and a channel may be connected to more than one control unit. One or more control units on a channel may be shared with other systems. Consequently, a channel may not be able to access the control unit with the oldest SIOF in the stack but may be able to access another control unit on the channel's daisy chain. However, absent the present invention the IOP of the foregoing system would, upon receiving a control unit busy status in response to an SIOF's CCW, interrupt the instruction processor to report this status and, upon subsequently receiving status indicating that the control unit is available, interrupt the instruction processor to again report status. At this time the instruction processor would issue another UPI to the IOP to again try execution of the SIOF. The present invention eliminates the necessity of twice interrupting an instruction processor when an SIOF cannot be executed because a control unit is busy.